RSU32 RELEASE NOTES 09-JUN-98 V1.22 SynchronizeDir options "ForceNewer" added, which modifies "Overwrite" (and thus can only be specified in conjunction with it) and forces modified but newer files in the destination directory to be kept. 26-APR-98 V1.21 SynchronizeDir options "CreateEmptyDirs" added, which causes SynchronizeDir to create directories in the destination path even if they are empty in the source path. The default behaviour is to create directories with files only. 13-APR-98 V1.2 Credit Card Payment added. 15-MAR-98 V1.13pl5 The IfRegValueExist command can now be used to query the existence of the default value by omitting the parameter. 14-OCT-97 V1.13pl4 User abort now hopefully really yields errorlevel 17. If an external command cannot be found, a more accuarate error message will be displayed. 18-SEP-97 V1.13pl3 User abort now yields errorlevel 17. 21-JUL-97 V1.13pl2 There was a bug in RSU32's conflict management. It was fixed. Also, RSU32 did not properly return focus to the calling process. This was also fixed. 16-JUL-97 V1.13pl1 There was a bug in 1.13's new feature that only those dirs in the target that actually contain files after synchronization are created. Now it should work. Also, a sanity check was included. If the destination directory is a subdir of the source, it is automatically excluded from synchronization (to avoid non- terminating loops). The same happens if the source directory is a subdirectory of the destination dir. 14-JUL-97 V1.13 This version fixes several bugs within the environment variables handling and the registry manipulation commands. Also, if SynchronizeDir is used with FilesLike and DirsLike (or ExcludeDir and ExcludeFile), only those directories from which files/dirs where actually copied are created in the destination path. Now there is also a check for enough free space (and a warning message if there is not) after 2 Megabytes of copied data in SynchronizeDir. 11-JUN-97 V1.12 The command line switch /quiet was added. If specified, the registered version of RSU32 produces no output whatsoever (and will show no window). If /debug is specified along with /quiet, the debug file is written. This switch has no effect in the unregistered version of RSU32. Please note that RSU32 will never finish if in quiet mode commands are executed that require user input, such as "pause". 01-JUN-97 V1.11 RSU32 now displays additional information if file security information cannot be obtained or set. Also, this feature now works more reliably. Auditing information is now also copied if the "CopyAudit" option is specified in addition to "CopySecurity". RSU32 must be run with BackupRead and BackupWrite privileges in order for CopyAudit to work. CopyAudit does not work alone, only in conjunction with CopySecurity. WARNING: If CopyAudit is specifed and RSU32 is not run with BackupRead and BackupWrite privileges, NO file security information will be copied, even if the privileges would allow for the owner information and the discretionary ACL to be copied! 25-MAY-97 V1.1 A bug that caused RSU32 to hang if used with undefined environment variables has been fixed. A new option for SynchronizeDir has been added: CopySecurity. Under Windows NT, this will copy the enhanced file attributes, user/group information and any associated discretionary ACL's during copy operations. Under Windows 95, this option has no effect. 28-MAR-97 V1.03 A bug within the IF RegValue() command has been fixed. 25-JAN-97 V1.02 RSU32 now properly aborts the synchronization if the network goes down in all cases. A bug in earlier versions caused data loss in some instances when during a synchronization over a network the network went down and the DELETE parameter was specified. Be sure to upgrade! 22-JAN-97 V1.01 A bug within IniAddLine that allowed to add the same line even if it was already present has been fixed. 05-JAN-97 V1.0 Final Release of RSU32 1.0. After half a year of an integrated beta testing/ extended development phase, RSU32 has been thoroughly tested and is very stable now. No known bugs remain (although there are probably still quite a few unknown left). 30-DEC-96 R0.985á Oops - There was a bug in R0.984 that I didn't see - a case of optimizer-beats- effectivity. Fixed. 29-DEC-96 R0.984á RSU32 now will also recoginze two files as equal (provided file name and size match) if the two file times differ by no more than +-23 hours and +- 30 seconds. This will allow RSU32 to cope with a WAN that spans several time zones. Supersedes teh behaviour in R0.983á. 25-DEC-96 R0.983á RSU32 is now ¯lazier® in the comparison of File Dates/Times. Due to some as yet unexplained behaviour in Windows NT 4, some files which are supposed to be equal in date and time differ very slightly. RSU32 now considers one file equal to another if the file sizes and names are the same and the file time differs by no more than 30 seconds (and the hour differs by no more than 1). 12-DEC-96 R0.982á A bug has been fixed in command line option handling. A command line option has been added: /NOABORT will disable the Abort button in the RSU32 main window. It will also disable the key combination ALT+F4 and any other close method. 04-DEC-96 R0.981á RSU's helper app, SPAWN.EXE, is now found even if RSU has not been started from the directory where it resides. Besides, a bug with SynchronizeDir's Report feature and another with the environment handling has been fixed. 28-NOV-96 R0.98á RSU32 now checks for different file times using the built-in API function "CompareFileTime". Besides, some minor GUI changes and bug fixes. 27-OCT-96 R0.97á bug fix... this is getting boring ;-) 20-OCT-96 R0.96á Just another tiny bug fix... 10-OCT-96 R0.957á Just a minor bug fix. 06-OCT-96 R0.956á Several fixes in the INI* commands have been made and the display of the intro screen has been speeded up. Besides, it should give me more info on why NT 4 is so unruly in respect to the self-made 3D-look of RSU32. 04-OCT-96 R0.955á Just another test version.. no bug fixes, no improvements. 03-OCT-96 R0.95á This version fixes minor bugs concerning If-Registry commands that caused RSU32 to hang in some (very particular) cases. It also hopes to improve visual quality (what a phrase!) in Windows NT 4, under which OS it previously showed weird behaviour in its main window (the left one). 02-OCT-96 R0.947á This version searches SPAWN.EXE in its initial startup directory. It also fixes a bug that made tracking the thumbbar in the output window impossible. Furthermore, it should speed up the display in the output window with many lines due to added high-speed assembler code. 30-SEP-96 R0.946á (in the early morning/late night hours...) This version tracks everything it does within its function SpawnExternal, in which the weird behaviour under Windows NT takes place. Nothing else has been changed or added - I'm still stuck with this one. 29-SEP-96 R0.945á This version has no major enhancements nor bug fixes. It is intended to give me more detailed information on RSU32's misbehaviour under Windows NT when spawning external applications. 24-SEP-96 R0.94á This version changes the method by which it communicates to child processes (i.e. DOS programs, such as del or xcopy), thereby obsoleting the usage of TMP-files and introducing the concept of anonymous pipes. The helper application SPAWN.EXE must be in the same directory as RSU32.EXE. 22-SEP-96 R0.93á Only Bug Fixes. 08-SEP-96 R0.92á RSU32 is now a fully-featured multi-threaded application, which allows for a smoother, more responsive behaviour of the GUI. Several small bugs have been eliminated. 28-AUG-96 R0.91á RSU32 now supports more command line options. In order to see the output window, you have to specify the /OUTPUT parameter. Otherwise, RSU32 will not show the output window. You can also save the content of the output window to a file, using the parameter "/LOG file.ext" (you do not need to specify the /OUTPUT parameter for this to work). Many small bugs, especially in If Registry- and RegXXX-commands in conjunction with Windows NT have been eliminated. 09-JUN-96 R0.55á RSU32 now can be run without a command line. In such a case, it scans the WIN.INI file for the line "Default Command Options=..." in the section [RSU32]. A bug with the /TRACE option has been fixed. 06-JUN-96 R0.5á Besides fixing some minor bugs, especially in the new Registry manipulation commands and changing the icon (BTW: If you have an idea for a cool icon, please let me know), this version introduces three new commands: 1.) If RegKeyExist({where}) {key} then 2.) If RegValueExist {value} then 3.a) If RegValue({value}) = {content} then 3.b) If RegValue({value}) <> {content} then 3.c) If RegValue({value}) < {content} then 3.d) If RegValue({value}) > {content} then 3.e) If RegValue({value}) <= {content} then 3.f) If RegValue({value}) >= {content} then The first command finds out whether the key {key} in the registry {where} (currently only supports "local" and remote servers) exists. It does NOT open the key. The key most previously opened remains open and untouched. The {key} parameter may be relative to the current open key. The second command determines whether a value in the currently open key exists. The remaining commands take the content of the value {value} in the currently open key and compare it to {content} using the specified operator. The form of {content} depends on the type of the value being examined. It can have the same formats as in the RegSetValue command. 26-MAY-96 R0.35á As testing and development of RSU32 proceeds, I am now implementing the Registry manipulation commands in RSU32. In the final release, RSU32 should be able to process registries on the local machine, on the network and text file-based registries (such as created when you export a registry or a key in the REGEDIT program). (drop the text files - I spare them for a later version. None in 1.0!) As of now, the former two are implemented (local and remote registries). Of these, the manipulation of the local registry has been tested in some detail. The commands are as follows: RegOpenKey {where} {key} RegSetValue {value}:{type}:{content} RegDeleteKey {where} {key} RegDeleteValue {value} The RegOpenKey command opens, or, if not already present, creates the key specified by {key}. The RegSetValue command sets (and in doing so possibly creates) a value of the type {type} to the content {content}. The RegDeleteKey command deletes the key {key} with all of its subkeys and values. The RegDeleteValue removes one value (i.e. the one specified by {value}) from the current key. In order for RegSetValue and RegDeleteValue to work, the key must have been opened by RegOpenKey first. In later stages of RSU32 beta testing, there will be If RegKeyExist, If RegValueExist, and If RegValue = {something} commands to enable the RSU program to determine whether specified keys/values exist and what they contain. The option {where} can be either "Local", or a server name on the current network (e.g. \\LONDONSERVER7), or a file name or a UNC name of a text file (which is not yet supported). "Local" denotes the local registry and a server name denotes the registry of the specified server. A file or UNC name denotes a text file that contains registry information and is to be manipulated. Keys have the format \\KEY\SUBKEY\SUBKEY\....\SUBKEY, e.g. \\HKEY_LOCAL_MACHINE\System\CurrentControlSet. Long key names can be word-wrapped before any backslash (\), such as: RegOpenKey Local \\HKEY_LOCAL_MACHINE\System \CurrentControlSet \Services Please note that the name of the topmost key must be preceded by two backslashes (\\). Keys can also be relative to the currently open key. For instance, the combination of the two commands RegOpenKey Local \\HKEY_LOCAL_MACHINE\System\CurrentControlSet RegOpenKey Local Services\Arbitrators opens (and possibly creates) the key \\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Arbitrators in the local registry. Please note that both commands refer to the same registry. If the second command referred to a remote registry or a file, the key name would have been considered complete (rather than relative) and the function would have failed (as Services\Arbitrators is not a valid complete key name). The {type} specifier in the RegSetValue command can be REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD, REG_DWORD_LITTLE_ENDIAN, REG_DWORD_BIG_ENDIAN or REG_BINARY. The format of {content} depends on the type specified. REG_DWORD, REG_DWORD_LITTLE_ENDIAN and REG_DWORD_BIG_ENDIAN require one single unsigned DWORD (which can either be specified as a hex value, e.g. 0xFFFFFFFF, or as a decimal value, e.g. 4294967296). A DWORD stores 32 bits of unsigned data. This means a DWORD contains any number between (and including) 0 to 4294967296. REG_SZ and REG_EXPAND_SZ require one single character string enclosed in quotes ("). REG_MULTI_SZ requires one or more character strings enclosed in quotes and delimited by spaces ( ) and/or commas (,). REG_BINARY requires one or more bytes in hexadecimal or decimal form (e.g. 0xFF or 255) delimited by commas (,). 08-MAY-96 R0.2á As a result of first testing, I have found and removed several minor bugs, as well as included several new features in RSU32. You can now specify /TRACE as an command line option. If you do so, RSU will stop after every line in the RSU program file until you press a key. This allows you to debug the program more thoroughly. Furthermore, there is a command PAUSE - which stops until a key is pressed. I have also included the command SHELL, which allows you to execute DOS commands. Syntax is SHELL . 24-APR-96 R0.1á Thanks for your interest in RSU32. Please let me point out that this version is still quite untested, and that any kind of errorneous behaviour may occur! It would therefore be unwise to use RSU32 on live machines. RSU32 has the same functionality as RSU for DOS, with the following exceptions: * The IF-BIOS command is not supported. It's function will later be accomodated by the Registry commands (which will allow to manipulate and query the Windows Registry). These, however, are not yet implemented. * The possibility to apply the INI-commands to text files (through the use of the REM [Section] syntax) is no longer supported. The SynchronizeDir function should be working exactly as in RSU for DOS, except that you can specify long path names and UNC's. However, the code for the function is also new, so that proper function cannot be guaranteed. Please do report any bugs you may find and suggestions on the improval of RSU32! It will greatly help me make the program as reliable and user-friendly as possible in the shortest possible time.